<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>正则表达式</title>
	</head>
	<body>
		<script type="text/javascript">
			/* 
				1、什么是正则表达式，有什么用？
					正则表达式是一门独立的学科，基本每个语言都支持。
					正则表达式不是JS专属的。不过在JS中使用居多。
					通常使用正则表达式进行字符串格式匹配。
					
					正则表达式是有一堆特殊的符号组成的一个表达式。
					每一个特殊的符号都有特殊的代表含义。
					
					例如：
						qq号的正则表达式。
						邮箱地址的正则表达式。
						
					邮箱地址格式验证：
						程序中有一个邮箱地址的正则表达式。
						用户输入了一个邮箱地址。
						那么邮箱地址的正则表达式和邮箱地址进行匹配，能匹配成功，表示合法，反之表示不合法。
						
				2、对于javascript程序员来说，我们对于正则表达式掌握到什么程度呢？
					第一：能够看懂正则表达式
					第二：简单的正则要会写
					第三：要能够独立的从网络当中搜索到你想要的正则表达式（搜索能力要有）
					第四：要会创建JS的正则表达式对象。
					第五：要会调用JS正则表达式对象的方法。
				
				3、常见的正则表达式符号有哪些？
					. 匹配除换行符以外的任意字符 
					\w 匹配字母或数字或下划线或汉字 
					\s 匹配任意的空白符 
					\d 匹配数字 
					\b 匹配单词的开始或结束 
					^ 匹配字符串的开始 
					$ 匹配字符串的结束 
					
					* 重复零次或更多次 0-N次
					+ 重复一次或更多次  1-N次
					? 重复零次或一次  0或1次
					{n} 重复n次  n次
					{n,} 重复n次或更多次  n+次
					{n,m} 重复n到m次  n到m次
					注意：数量永远匹配的都是前面的那个字符出现的次数。
					
					\W 匹配任意不是字母，数字，下划线，汉字的字符 
					\S 匹配任意不是空白符的字符 
					\D 匹配任意非数字的字符 
					\B 匹配不是单词开头或结束的位置 
					[^x] 匹配除了x以外的任意字符 
					[^aeiou] 匹配除了aeiou这几个字母以外的任意字符 
					
					| 表示或者
					
					[a-z]{1} a到z所有的字符中的任意1个。
					
					[a-zA-Z0-9]{3,} 前面这堆中的任意字符至少出现3个。
					
					[1-9][0-9]{4,}    qq号的正则表达式，最小的qq号是10000
					
					[1-9] 没有指定数量的时候，默认是1个。
					
				4、邮箱的正则表达式：
					^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
					这个邮箱地址从网上找了之后不一定能用，你需要测试。反复测试。
				
				5、在JS中怎么创建正则表达式对象呢？
				
					包括两种方式，重点使用第一种
					
					第一种方式：直接量语法
						var regExp = /正则表达式/标记
						
					第二种方式：使用内置类RegExp类。
						var regExp = new RegExp("正则表达式", "标记")
					
					标记是可选项！！！！！都有哪些值可选呢？
						g：全局 global
						i: 忽略大小写 ignorecase
						gi: 全局扫描，并且忽略大小写。
				
				6、正则表达式对象有一个很重要的方法：
					var emailRegExp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
					var ok = emailRegExp.test("用户输入的字符串");
					返回值ok是true表示，匹配成功了。
					
					其实在JS中，字符串String也是支持正则表达式的。
			 */
			// 字符串对象使用正则表达式
			console.log("1980-11-10".replace("-", "/"))
			// g表示global全局的,所有的 - 替换成/
			console.log("1980-11-10".replace(/-/g, "/"))
			
			function checkEmail(){
				//获取邮箱地址
				var email = document.getElementById("email").value;
				// 创建正则表达式对象
				var regExp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
				// 验证
				var ok = regExp.test(email);
				if(ok){
					alert("邮箱地址合法")
				}else{
					alert("邮箱地址不合法");
				}
			}
			
		</script>
		
		邮箱地址：<input type="text" id="email" />
		<input type="button" value="验证邮箱地址" onclick="checkEmail()"/>
	</body>
</html>
